home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / MOR55SRC.ZIP / MORIA / SOURCE / SETS.C < prev    next >
C/C++ Source or Header  |  1992-12-07  |  5KB  |  262 lines

  1. /* source/sets.c: code to emulate the original Pascal sets
  2.  
  3.    Copyright (c) 1989-92 James E. Wilson
  4.  
  5.    This software may be copied and distributed for educational, research, and
  6.    not for profit purposes provided that this copyright and statement are
  7.    included in all such copies. */
  8.  
  9. #include "config.h"
  10. #include "constant.h"
  11. #include "types.h"
  12.  
  13. int set_room(element)
  14. register int element;
  15. {
  16.   if ((element == DARK_FLOOR) || (element == LIGHT_FLOOR))
  17.     return(TRUE);
  18.   return(FALSE);
  19. }
  20.  
  21. int set_corr(element)
  22. register int element;
  23. {
  24.   if (element == CORR_FLOOR || element == BLOCKED_FLOOR)
  25.     return(TRUE);
  26.   return(FALSE);
  27. }
  28.  
  29. int set_floor(element)
  30. int element;
  31. {
  32.   if (element <= MAX_CAVE_FLOOR)
  33.     return(TRUE);
  34.   else
  35.     return(FALSE);
  36. }
  37.  
  38. int set_corrodes(item)
  39. inven_type *item;
  40. {
  41.   switch(item->tval)
  42.     {
  43.     case TV_SWORD: case TV_HELM: case TV_SHIELD: case TV_HARD_ARMOR:
  44.     case TV_WAND:
  45.       return (TRUE);
  46.     }
  47.   return(FALSE);
  48. }
  49.  
  50.  
  51. int set_flammable(item)
  52. inven_type *item;
  53. {
  54.   switch(item->tval)
  55.     {
  56.     case TV_ARROW: case TV_BOW: case TV_HAFTED: case TV_POLEARM:
  57.     case TV_BOOTS: case TV_GLOVES: case TV_CLOAK: case TV_SOFT_ARMOR:
  58.       /* Items of (RF) should not be destroyed.  */
  59.       if (item->flags & TR_RES_FIRE)
  60.     return FALSE;
  61.       else
  62.     return TRUE;
  63.  
  64.     case TV_STAFF: case TV_SCROLL1: case TV_SCROLL2:
  65.       return TRUE;
  66.     }
  67.   return(FALSE);
  68. }
  69.  
  70.  
  71. int set_frost_destroy(item)
  72. inven_type *item;
  73. {
  74.   if ((item->tval == TV_POTION1) || (item->tval == TV_POTION2)
  75.       || (item->tval == TV_FLASK))
  76.     return(TRUE);
  77.   return(FALSE);
  78. }
  79.  
  80.  
  81. int set_acid_affect(item)
  82. inven_type *item;
  83. {
  84.   switch(item->tval)
  85.     {
  86.     case TV_MISC: case TV_CHEST:
  87.       return TRUE;
  88.     case TV_BOLT: case TV_ARROW:
  89.     case TV_BOW: case TV_HAFTED: case TV_POLEARM: case TV_BOOTS:
  90.     case TV_GLOVES: case TV_CLOAK: case TV_SOFT_ARMOR:
  91.       if (item->flags & TR_RES_ACID)
  92.     return (FALSE);
  93.       else
  94.     return (TRUE);
  95.     }
  96.   return(FALSE);
  97. }
  98.  
  99.  
  100. int set_lightning_destroy(item)
  101. inven_type *item;
  102. {
  103.   if ((item->tval == TV_RING) || (item->tval == TV_WAND)
  104.       || (item->tval == TV_SPIKE))
  105.     return(TRUE);
  106.   else
  107.     return(FALSE);
  108. }
  109.  
  110.  
  111. /*ARGSUSED*/    /* to shut up lint about unused argument */
  112. #ifdef __TURBOC__
  113.     #pragma argused
  114. #endif
  115. int set_null(item)
  116. inven_type *item;
  117. #if defined(MAC) && !defined(THINK_C)
  118.     #pragma unused(item)
  119. #endif
  120. {
  121.   return(FALSE);
  122. }
  123.  
  124.  
  125. int set_acid_destroy(item)
  126. inven_type *item;
  127. {
  128.   switch(item->tval)
  129.     {
  130.     case TV_ARROW: case TV_BOW: case TV_HAFTED: case TV_POLEARM:
  131.     case TV_BOOTS: case TV_GLOVES: case TV_CLOAK: case TV_HELM:
  132.     case TV_SHIELD: case TV_HARD_ARMOR: case TV_SOFT_ARMOR:
  133.       if (item->flags & TR_RES_ACID)
  134.     return FALSE;
  135.       else
  136.     return TRUE;
  137.     case TV_STAFF:
  138.     case TV_SCROLL1: case TV_SCROLL2: case TV_FOOD: case TV_OPEN_DOOR:
  139.     case TV_CLOSED_DOOR:
  140.       return(TRUE);
  141.     }
  142.   return(FALSE);
  143. }
  144.  
  145.  
  146. int set_fire_destroy(item)
  147. inven_type *item;
  148. {
  149.   switch(item->tval)
  150.     {
  151.     case TV_ARROW: case TV_BOW: case TV_HAFTED: case TV_POLEARM:
  152.     case TV_BOOTS: case TV_GLOVES: case TV_CLOAK: case TV_SOFT_ARMOR:
  153.       if (item->flags & TR_RES_FIRE)
  154.     return FALSE;
  155.       else
  156.     return TRUE;
  157.     case TV_STAFF: case TV_SCROLL1: case TV_SCROLL2: case TV_POTION1:
  158.     case TV_POTION2: case TV_FLASK: case TV_FOOD: case TV_OPEN_DOOR:
  159.     case TV_CLOSED_DOOR:
  160.       return(TRUE);
  161.     }
  162.   return(FALSE);
  163. }
  164.  
  165.  
  166. int general_store(element)
  167. int element;
  168. {
  169.   switch(element)
  170.     {
  171.     case TV_DIGGING: case TV_BOOTS: case TV_CLOAK: case TV_FOOD:
  172.     case TV_FLASK: case TV_LIGHT: case TV_SPIKE:
  173.       return(TRUE);
  174.     }
  175.   return(FALSE);
  176. }
  177.  
  178.  
  179. int armory(element)
  180. int element;
  181. {
  182.   switch(element)
  183.     {
  184.     case TV_BOOTS: case TV_GLOVES: case TV_HELM: case TV_SHIELD:
  185.     case TV_HARD_ARMOR: case TV_SOFT_ARMOR:
  186.       return(TRUE);
  187.     }
  188.   return(FALSE);
  189. }
  190.  
  191.  
  192. int weaponsmith(element)
  193. int element;
  194. {
  195.   switch(element)
  196.     {
  197.     case TV_SLING_AMMO: case TV_BOLT: case TV_ARROW: case TV_BOW:
  198.     case TV_HAFTED: case TV_POLEARM: case TV_SWORD:
  199.       return(TRUE);
  200.     }
  201.   return(FALSE);
  202. }
  203.  
  204.  
  205. int temple(element)
  206. int element;
  207. {
  208.   switch(element)
  209.     {
  210.     case TV_HAFTED: case TV_SCROLL1: case TV_SCROLL2: case TV_POTION1:
  211.     case TV_POTION2: case TV_PRAYER_BOOK:
  212.       return(TRUE);
  213.     }
  214.   return(FALSE);
  215. }
  216.  
  217.  
  218. int alchemist(element)
  219. int element;
  220. {
  221.   switch(element)
  222.     {
  223.     case TV_SCROLL1: case TV_SCROLL2: case TV_POTION1: case TV_POTION2:
  224.       return(TRUE);
  225.     }
  226.   return(FALSE);
  227. }
  228.  
  229.  
  230. int magic_shop(element)
  231. int element;
  232. {
  233.   switch(element)
  234.     {
  235.     case TV_AMULET: case TV_RING: case TV_STAFF: case TV_WAND:
  236.     case TV_SCROLL1: case TV_SCROLL2: case TV_POTION1: case TV_POTION2:
  237.     case TV_MAGIC_BOOK:
  238.       return(TRUE);
  239.     }
  240.   return(FALSE);
  241. }
  242.  
  243. #ifdef MAC
  244. /* The last time tried, MPW failed to handle the initialized array of
  245.    function pointers properly.  hence, this hack. */
  246. int store_buy(storeno, element)
  247. int storeno;
  248. int element;
  249. {
  250.   switch (storeno)
  251.     {
  252.     case 0: return(general_store(element));
  253.     case 1: return(armory(element));
  254.     case 2: return(weaponsmith(element));
  255.     case 3: return(temple(element));
  256.     case 4: return(alchemist(element));
  257.     case 5: return(magic_shop(element));
  258.     }
  259.   return(FALSE);
  260. }
  261. #endif
  262.